home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- SAMBA_DHCP_CONF=/etc/samba/dhcp.conf
-
- netbios_setup() {
- # No need to continue if we're called with an unsupported option
-
- case $reason in
- BOUND|RENEW|REBIND|REBOOT|EXPIRE|FAIL|RELEASE|STOP)
- ;;
- *)
- return
- ;;
- esac
-
- umask 022
-
- local other_servers
- other_servers==""
- local serverlist
- serverlist==""
-
- # the destination file won't exist yet on the first run after
- # installing samba
- if [ -e $SAMBA_DHCP_CONF ]
- then
- # don't continue if no settings have changed
- if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \
- && [ "$new_netbios_scope" = "$old_netbios_scope" ] \
- && [ -n "$new_netbios_name_servers" ]
- then
- return
- fi
-
- # reparse our own file
- other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \
- s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \
- $SAMBA_DHCP_CONF`
-
- serverlist="$other_servers"
- fi
-
- for server in $new_netbios_name_servers
- do
- serverlist="$serverlist $interface:$server"
- done
-
- echo -n > ${SAMBA_DHCP_CONF}.new
-
- # If we're updating on failure/expire, AND there are no WINS
- # servers for other interfaces, leave the file empty.
- if [ -z "$other_servers" ]
- then
- if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ]
- then
- mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
- return
- fi
- fi
-
- if [ -n "$serverlist" ]
- then
- echo " wins server =$serverlist" >> ${SAMBA_DHCP_CONF}.new
- fi
- if [ -n "$new_netbios_scope" ]
- then
- echo " netbios scope = $new_netbios_scope" >> ${SAMBA_DHCP_CONF}.new
- fi
- mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
-
- # reload the samba server
- # We don't necessarily have the samba package installed. #414841
- [ -x /etc/init.d/samba ] && /usr/sbin/invoke-rc.d samba reload
-
- }
-
- netbios_setup
-